﻿Imports System.Data.Common

Public Class PlanCuentas

    Public COD_CUENTA, DESCRIPCION, FECHA_REGISTRO As String
    Public NATURALEZA, TIPO_CUENTA, TERCERO, CCOSTO As Char
    Public PORC_BASE, MES00, MES01, MES02, MES03, MES04, MES05, _
        MES06, MES07, MES08, MES09, MES10, MES11, MES12, MES13 As Decimal

    Public Shared Function exist(ByRef Cta As PlanCuentas) As Boolean
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT * FROM PLAN_CUENTAS where COD_CUENTA=@COD_CUENTA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.COD_CUENTA, "COD_CUENTA"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If

        If dtConsulta.Rows.Count <= 0 Then
            Return False
        Else
            Return True
        End If

    End Function

    Public Shared Function Nuevo(ByRef Cta As PlanCuentas) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            Dim ok As Boolean = False
            sentencia = "SP_PLAN_CUENTAS_I"

            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.COD_CUENTA, "COD_CUENTA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.DESCRIPCION, "DESCRIPCION"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.NATURALEZA, "NATURALEZA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.TIPO_CUENTA, "TIPO_CUENTA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.TERCERO, "TERCERO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.CCOSTO, "CCOSTO"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.PORC_BASE, "PORC_BASE"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES00, "MES00"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES01, "MES01"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES02, "MES02"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES03, "MES03"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES04, "MES04"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES05, "MES05"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES06, "MES06"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES07, "MES07"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES08, "MES08"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES09, "MES09"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES10, "MES10"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES11, "MES11"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES12, "MES12"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.MES13, "MES13"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutChar(conexion, "", "P_ERROR"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutString(conexion, "", "P_MENSAJE"))

            ok = conexion.EjecutarProcedimiento(sentencia)
            oResultado.ExisteError = conexion.ExisteError
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Actualizar(ByRef Cta As PlanCuentas) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "UPDATE PLAN_CUENTAS SET DESCRIPCION=@DESCRIPCION,NATURALEZA=@NATURALEZA,TERCERO=@TERCERO," + _
                "CCOSTO=@CCOSTO,PORC_BASE=@PORC_BASE WHERE COD_CUENTA=@COD_CUENTA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.COD_CUENTA, "COD_CUENTA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.DESCRIPCION, "DESCRIPCION"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.NATURALEZA, "NATURALEZA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.TERCERO, "TERCERO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInChar(conexion, Cta.CCOSTO, "CCOSTO"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInDecimal(conexion, Cta.PORC_BASE, "PORC_BASE"))

            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Eliminar(ByRef Cta As PlanCuentas) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "DELETE FROM PLAN_CUENTAS WHERE COD_CUENTA=@COD_CUENTA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cta.COD_CUENTA, "COD_CUENTA"))

            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function ConsultarAll() As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from PLAN_CUENTAS"
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function ConsxCCtaoDesc(filtro As String) As DataTable
        filtro = "%" + filtro + "%"
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT * FROM PLAN_CUENTAS where cod_cuenta like @filtro or descripcion like @filtro"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, filtro, "filtro"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function ConsCCta(ByRef Cuenta As PlanCuentas) As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT * FROM PLAN_CUENTAS where COD_CUENTA=@COD_CUENTA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, Cuenta.COD_CUENTA, "COD_CUENTA"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function ConsCtasAux(ByRef Cta As PlanCuentas) As DataTable
        Dim COD_CUENTA As String = Cta.COD_CUENTA + "%"
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT * FROM PLAN_CUENTAS where COD_CUENTA like @COD_CUENTA and TIPO_CUENTA=2"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, COD_CUENTA, "COD_CUENTA"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

End Class
